package cn.tom.log;


//import cn.itsource.system.domain.SystemLog;
//import cn.itsource.system.mapper.SystemLogMapper;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * Aop业务类：记录系统日志
 */
@Component  //将当前类交给Spring管理
//@Aspect     //申请当前类是一个切面类
public class SystemLogAop {

////    @Autowired
////    private SystemLogMapper systemLogMapper;
//
//
//    //定义切点表达式，明确要对那些方法起作用（比如，只对cn.itsource.org.controller组织机构下的所有包的所有方法起作用）
//    //注意：如果controller中方法如果是private这里要出问题，不能将controller中的方法写成是private的，必须是公有的
////    @Pointcut("execution(* cn.itsource.org.controller.*.*(..))")
//    public void controllerPointcut() {
//    }
//
//    //通过引用切点表达式，明确这个增强的应用规则。即编写增强逻辑
////    @Around(value = "controllerPointcut()")
//    public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//        // 获取请求信息
//        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//
//        String requestType = request.getHeader("requestType");
//        if(requestType == null){//后台请求才记录日志，前台请求没有所以不记录日志，因为无法获取操作人
//            //获取请求地址，排除不需要记录日志的请求地址
////            String requestURI = request.getRequestURI();
////            List<String> uris = Stream.of("/login", "/minio","/logout","/systemLog","/shop/importData","/course/exportData").collect(Collectors.toList());
//
//            //记录请求日志
////            if(!uris.contains(requestURI)){
//                String remoteAddr = request.getRemoteAddr();
//                //获取类名
//                String className = proceedingJoinPoint.getTarget().getClass().getName();
//                //获取方法名
//                String methodName = proceedingJoinPoint.getSignature().getName();
//                //获取当前系统时间并格式化
//                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//                String time = dateFormat.format(new Date());
//                //组装内容
//                String content = time + ": " + remoteAddr + "操作了" + className + "的" + methodName + "方法";
//                SystemLog systemLog = new SystemLog();
//                systemLog.setContent(content);
//                systemLog.setIp(remoteAddr);
//                //获取系统用户=当前登录人 没有登录设置为null
//                systemLog.setOperator("系统内部人员");
//                systemLogMapper.add(systemLog);
//            }
////        }
//
//        //执行业务方法
//        Object result = proceedingJoinPoint.proceed();
//        return result;
//    }
}
